home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / cdlist / cdlist.bas next >
BASIC Source File  |  1994-06-01  |  29KB  |  796 lines

  1. 10 '
  2. 20 '<<<<<  .CDLファイルエディタ        >>>>>
  3. 30 '<<<<<      CDLister V1.1    >>>>>
  4. 40 '<<<<< programed by KIM(Takefumi Kimura) 1994 >>>>>
  5. 50 '
  6. 60 *INIT
  7. 70 CLEAR:CLEAR,,,200000:CONSOLE 0,24,2
  8. 80 SCREEN 0:SCREEN@0:CLS
  9. 90 ON ERROR GOTO *E_TRAP
  10. 100 DIM TITLE$(10),ART$(10),LAB$(10),DT$(10),SN(10),TIF$(10),WRD$(10)
  11. 110 DIM TM$(10,99),SNAME$(10,99),PT1%(29000),PT3%(23000)
  12. 120 PLAYCD=0
  13. 130 LOAD@"CDLVP.TIF"
  14. 140 OPEN "I",#1,"CDLVHIS.DAT"
  15. 150 LINE INPUT#1,FILE$
  16. 160 CLOSE
  17. 170 *MOUSE_INIT
  18. 180 MOUSE 0
  19. 190 MOUSE 1,320,240,1
  20. 200 '
  21. 210 GOSUB *LOAD
  22. 220 '
  23. 230 *MAIN
  24. 240 WHILE MOUSE(2,0)=0
  25. 250  A%=CDS%(5)
  26. 260  IF PLAYCD=1 THEN
  27. 270   CDSTAT CDS%
  28. 280   IF A%<>CDS%(5) THEN 
  29. 290    IF CDS%(5)=0 THEN GOSUB *CDSTOP:GOTO 330
  30. 300    PLAYCDN=CDS%(5):GOSUB *SYMBOL_PLAYCD
  31. 310   ENDIF
  32. 320  ENDIF
  33. 330 WEND
  34. 340 MX=MOUSE(0):MY=MOUSE(1)
  35. 350 FOR Z=0 TO 1
  36. 360  IF MX>528+Z*48 AND MX<576+Z*48 AND MY>160 AND MY<176 THEN
  37. 370   ON Z+1 GOSUB *S_ROLL_U,*S_ROLL_D
  38. 380  ENDIF
  39. 390  IF MX>16+Z*48 AND MX<64+Z*48 AND MY>224 AND MY<240 THEN
  40. 400   ON Z+1 GOSUB *CDBACK,*CDNEXT
  41. 410  ENDIF
  42. 420  IF MX>272 AND MX<624 AND MY>40+Z*24 AND MY<64+Z*24 THEN
  43. 430   ON Z+1 GOSUB *EDIT_TITLE,*EDIT_ART
  44. 440  ENDIF
  45. 450  IF MX>272 AND MX<400 AND MY>88+Z*24 AND MY<112+Z*24 THEN
  46. 460   ON Z+1 GOSUB *EDIT_DT,*EDIT_TIF
  47. 470  ENDIF
  48. 480  IF MX>464 AND MX<624 AND MY>88+Z*24 AND MY<112+Z*24 THEN
  49. 490   ON Z+1 GOSUB *EDIT_LAB,*EDIT_WRD
  50. 500  ENDIF
  51. 510 NEXT
  52. 520 FOR Z=0 TO 11
  53. 530  IF Z+CS>SN(CCD) THEN 570
  54. 540  IF MX>224 AND MX<624 AND MY>176+Z*24 AND MY<200+Z*24 THEN
  55. 550   CES=Z:GOSUB *EDIT_SNAME
  56. 560  ENDIF
  57. 570 NEXT
  58. 580 IF MX>112 AND MX<160 AND MY>224 AND MY<248 THEN GOSUB *CDPLAY
  59. 590 IF MX>160 AND MX<200 AND MY>224 AND MY<248 THEN GOSUB *CDSTOP
  60. 600 IF MX>616 AND MX<641 AND MY>-1 AND MY<24 THEN GOSUB *EXIT
  61. 610 FOR Z=0 TO 4
  62. 620  IF MX>64+Z*80 AND MX<144+Z*80 AND MY>-1 AND MY<24 THEN
  63. 630   ON Z+1 GOSUB *TITLE_SELECT,*LOAD,*SAVE,*TITLE_SORT,*TITLE_ADD
  64. 640  ENDIF
  65. 650 NEXT
  66. 660 IF MX>-1 AND MX<64 AND MY>-1 AND MY<24 THEN GOSUB *COPYRIGHT
  67. 670 GOTO *MAIN
  68. 680 *DISPLAY_CT
  69. 690 LINE(130,116)-(208,132),PSET,0,BF
  70. 700 A1$=STR$(CCD):A2$=STR$(CDN)
  71. 710 SYMBOL(136,116),RIGHT$("000"+RIGHT$(A1$,LEN(A1$)-1),4)+"/"+RIGHT$("000"+RIGHT$(A2$,LEN(A2$)-1),4),1,1,%12
  72. 720 RETURN
  73. 730 *DISPLAY_CDDATA
  74. 740 FOR I=0 TO 1
  75. 750  LINE(276,44+24*I)-(616,60+24*I),PSET,%1,BF
  76. 760  LINE(276,92+24*I)-(392,108+24*I),PSET,%1,BF
  77. 770  LINE(472,92+24*I)-(616,108+24*I),PSET,%1,BF
  78. 780 NEXT
  79. 790 LINE(352,140)-(392,156),PSET,%1,BF
  80. 800 LINE(472,140)-(488,156),PSET,%1,BF
  81. 810 A3=0
  82. 820 FOR I=1 TO SN(CCD)
  83. 830  A1=VAL(LEFT$(TM$(CCD,I),2)):A2=VAL(RIGHT$(TM$(CCD,I),2))
  84. 840  A3=A3+A1*60+A2
  85. 850 NEXT
  86. 860 TM1$=STR$(INT(A3/60)):TM2$=STR$(A3 MOD 60)
  87. 870 TMCD$=RIGHT$("00"+RIGHT$(TM1$,LEN(TM1$)-1),2)+"'"+RIGHT$("00"+RIGHT$(TM2$,LEN(TM2$)-1),2)
  88. 880 SYMBOL(448-LEN(TITLE$(CCD))*4,44),TITLE$(CCD),1,1,7
  89. 890 SYMBOL(448-LEN(ART$(CCD))*4,68),ART$(CCD),1,1,7
  90. 900 SYMBOL(336-LEN(DT$(CCD))*4,92),DT$(CCD),1,1,7
  91. 910 SYMBOL(336-LEN(TIF$(CCD))*4,116),TIF$(CCD),1,1,7
  92. 920 IF LEN(LAB$(CCD))>18 THEN A$=LEFT$(LAB$(CCD),18) ELSE A$=LAB$(CCD)
  93. 930 SYMBOL(544-LEN(A$)*4,92),A$,1,1,7
  94. 940 SYMBOL(544-LEN(WRD$(CCD))*4,116),WRD$(CCD),1,1,7
  95. 950 SYMBOL(352,140),TMCD$,1,1,7
  96. 960 SYMBOL(464,140),STR$(SN(CCD)),1,1,7
  97. 970 RETURN
  98. 980 *DISPLAY_SNAMES
  99. 990 FOR I=0 TO 11
  100. 1000  LINE(226,180+I*24)-(622,196+I*24),PSET,%1,BF
  101. 1010  IF I+1>SN(CCD) THEN 1050
  102. 1020  SYMBOL(226-8,180+I*24),STR$(I+1),1,1,%6
  103. 1030  SYMBOL(412-LEN(SNAME$(CCD,I+1))*4,180+I*24),SNAME$(CCD,I+1),1,1,7
  104. 1040  SYMBOL(583,180+I*24),TM$(CCD,I+1),1,1,%7
  105. 1050 NEXT
  106. 1060 RETURN
  107. 1070 *LOAD
  108. 1080 CONNECT(145,23)-(145,1)-(223,1),%13
  109. 1090 CONNECT(146,23)-(223,23)-(223,2),%14
  110. 1100 WHILE MOUSE(2,0):WEND
  111. 1110 CONNECT(145,23)-(145,1)-(223,1),%14
  112. 1120 CONNECT(146,23)-(223,23)-(223,2),%13
  113. 1130 GOSUB *FILE_IP_P
  114. 1140 SYMBOL(144,200),".CDLファイル読込",1,1,7
  115. 1150 GOSUB *FILE_IP_L
  116. 1160 OPEN "I",#1,FILE$
  117. 1170 INPUT#1,A$:CDN=VAL(A$)
  118. 1180 ERASE TITLE$,ART$,LAB$,DT$,SN,TIF$,WRD$,TM$,SNAME$
  119. 1190 DIM TITLE$(CDN),ART$(CDN),LAB$(CDN),DT$(CDN),SN(CDN),TIF$(CDN),WRD$(CDN)
  120. 1200 DIM TM$(CDN,99),SNAME$(CDN,99)
  121. 1210 FOR I=1 TO CDN
  122. 1220  INPUT#1,DUMMY$
  123. 1230  INPUT#1,TITLE$(I),ART$(I),LAB$(I),DT$(I),SN(I),TIF$(I),WRD$(I)
  124. 1240  FOR J=1 TO SN(I)
  125. 1250   INPUT#1,TM$(I,J),SNAME$(I,J)
  126. 1260 NEXT J,I
  127. 1270 CLOSE
  128. 1280 LINE(56,84)-(200,100),PSET,0,BF
  129. 1290 SYMBOL(56,84),LEFT$(FILE$+SPACE$(19),19),1,1,%12
  130. 1300 CCD=1:CLCD=CCD:CS=1
  131. 1310 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  132. 1320 GOSUB *DISPLAY_SNAMES
  133. 1330 RETURN
  134. 1340 *FILE_IP_P
  135. 1350 GOSUB *WINDOW
  136. 1360 LINE(144,232)-(498,256),PSET,%13,BF
  137. 1370 IP_WX=152:IP_WY=236:IP_MAX=42:IP_CL=13:IP_NAME$=FILE$
  138. 1380 GOSUB *IP_SET
  139. 1390 RETURN
  140. 1400 *FILE_IP_L
  141. 1410 M=0
  142. 1420 WHILE M=0
  143. 1430  M=-MOUSE(2,0)-MOUSE(2,1)*2
  144. 1440  GOSUB *IP_MAIN
  145. 1450 WEND
  146. 1460 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN 1330
  147. 1470 MX=MOUSE(0):MY=MOUSE(1)
  148. 1480 GOSUB *W_CHECK_YN
  149. 1490 IF YN=1 THEN 1520
  150. 1500 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN 1330
  151. 1510 GOTO *FILE_IP_L
  152. 1520 FILE$=IP_NAME$
  153. 1530 PUT@A(128,128)-(512,352),PT3%
  154. 1540 IF RIGHT$(FILE$,4)<>".CDL" THEN FILE$=FILE$+".CDL"
  155. 1550 RETURN
  156. 1560 *S_ROLL_U
  157. 1570 CONNECT(529,175)-(529,161)-(575,161),%13
  158. 1580 CONNECT(530,175)-(575,175)-(575,162),%14
  159. 1590 IF CS=<1 THEN 1670
  160. 1600 CS=CS-1
  161. 1610 GET@A(224,176)-(624,440),PT1%
  162. 1620 PUT@A(224,200)-(624,464),PT1%
  163. 1630 LINE(226,180)-(622,196),PSET,%1,BF
  164. 1640 SYMBOL(226-8,180),STR$(CS),1,1,%6
  165. 1650 SYMBOL(412-LEN(SNAME$(CCD,CS))*4,180),SNAME$(CCD,CS),1,1,7
  166. 1660 SYMBOL(583,180),TM$(CCD,CS),1,1,%7
  167. 1670 CONNECT(529,175)-(529,161)-(575,161),%14
  168. 1680 CONNECT(530,175)-(575,175)-(575,162),%13
  169. 1690 RETURN
  170. 1700 *S_ROLL_D
  171. 1710 CONNECT(577,175)-(577,161)-(623,161),%13
  172. 1720 CONNECT(578,175)-(623,175)-(623,162),%14
  173. 1730 IF CS>=SN(CCD)-11 THEN 1810
  174. 1740 CS=CS+1
  175. 1750 GET@A(224,200)-(624,464),PT1%
  176. 1760 PUT@A(224,176)-(624,440),PT1%
  177. 1770 LINE(226,444)-(622,460),PSET,%1,BF
  178. 1780 SYMBOL(226-8,444),STR$(CS+11),1,1,%6
  179. 1790 SYMBOL(412-LEN(SNAME$(CCD,CS+11))*4,444),SNAME$(CCD,CS+11),1,1,7
  180. 1800 SYMBOL(583,444),TM$(CCD,CS+11),1,1,%7
  181. 1810 CONNECT(577,175)-(577,161)-(623,161),%14
  182. 1820 CONNECT(578,175)-(623,175)-(623,162),%13
  183. 1830 RETURN
  184. 1840 *TITLE_SELECT
  185. 1850 CONNECT(65,23)-(65,1)-(143,1),%13
  186. 1860 CONNECT(66,23)-(143,23)-(143,2),%14
  187. 1870 WHILE MOUSE(2,0):WEND
  188. 1880 CONNECT(65,23)-(65,1)-(143,1),%14
  189. 1890 CONNECT(66,23)-(143,23)-(143,2),%13
  190. 1900 GET@A(128,128)-(512,352),PT3%
  191. 1910 GOSUB *WINDOW_S
  192. 1920 SYMBOL(144,136),"タイトル選択",1,1,7,,,1
  193. 1930 FOR I=0 TO 6
  194. 1940  J=I+CLCD
  195. 1950  IF J>CDN THEN I=6:GOTO 1970
  196. 1960  SYMBOL(320-LEN(TITLE$(J))*4,172+I*24),TITLE$(J),1,1,7
  197. 1970 NEXT
  198. 1980 M=0
  199. 1990 WHILE M=0
  200. 2000  M=-MOUSE(2,0)-MOUSE(2,1)*2
  201. 2010 WEND
  202. 2020 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN
  203. 2030 MX=MOUSE(0):MY=MOUSE(1)
  204. 2040 FOR I=0 TO 1
  205. 2050  IF MX>400+I*48 AND MX<448+I*48 AND MY>152 AND MY<168 THEN
  206. 2060   ON I+1 GOSUB *T_ROLL_U,*T_ROLL_D
  207. 2070  ENDIF
  208. 2080 NEXT
  209. 2090 FOR I=0 TO 6
  210. 2100  IF I+CLCD>CDN THEN I=6:GOTO 1970
  211. 2110  IF MX>144 AND MX<496 AND MY>168+I*24 AND MY<192+I*24 THEN
  212. 2120   K=I:I=6:NEXT:GOTO 2160
  213. 2130  ENDIF 
  214. 2140 NEXT
  215. 2150 GOTO 1980
  216. 2160 CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%13
  217. 2170 CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%14
  218. 2180 WHILE MOUSE(2,0):WEND
  219. 2190 PUT@A(128,128)-(512,352),PT3%
  220. 2200 CCD=CLCD+K:CS=1
  221. 2210 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  222. 2220 GOSUB *DISPLAY_SNAMES
  223. 2230 RETURN
  224. 2240 *TITLE_SORT
  225. 2250 IF CDN<1 THEN RETURN
  226. 2260 DIM BTITLE$(CDN),BART$(CDN),BLAB$(CDN),BDT$(CDN),BSN(CDN),BTIF$(CDN),BWRD$(CDN)
  227. 2270 DIM BTM$(CDN,99),BSNAME$(CDN,99),TSRT(CDN),NN(CDN)
  228. 2280 SORT=1:CLCD=1
  229. 2290 CONNECT(305,23)-(305,1)-(383,1),%13
  230. 2300 CONNECT(306,23)-(383,23)-(383,2),%14
  231. 2310 WHILE MOUSE(2,0):WEND
  232. 2320 CONNECT(305,23)-(305,1)-(383,1),%14
  233. 2330 CONNECT(306,23)-(383,23)-(383,2),%13
  234. 2340 GET@A(128,128)-(512,352),PT3%
  235. 2350 GOSUB *WINDOW_S
  236. 2360 SYMBOL(144,136),"タイトル並び換え",1,1,7,,,1
  237. 2370 FOR I=0 TO 6
  238. 2380  J=I+CLCD
  239. 2390  IF J>CDN THEN I=6:GOTO 2410
  240. 2400  SYMBOL(320-LEN(TITLE$(J))*4,172+I*24),TITLE$(J),1,1,7
  241. 2410 NEXT
  242. 2420 FOR J=1 TO CDN
  243. 2430  BTITLE$(J)=TITLE$(J):BART$(J)=ART$(J):BLAB$(J)=LAB$(J)
  244. 2440  BDT$(J)=DT$(J):BSN(J)=SN(J):BTIF$(J)=TIF$(J):BWRD$(J)=WRD$(J)
  245. 2450  FOR L=1 TO SN(J)
  246. 2460   BTM$(J,L)=TM$(J,L):BSNAME$(J,L)=SNAME$(J,L)
  247. 2470  NEXT
  248. 2480  LINE(280,136)-(500,152),PSET,%1,BF
  249. 2490  SYMBOL(280,136),AKCNV$(STR$(J))+"番目",1,1,%7
  250. 2500  M=0
  251. 2510  WHILE M=0
  252. 2520   M=-MOUSE(2,0)-MOUSE(2,1)*2
  253. 2530  WEND
  254. 2540  IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 2980
  255. 2550  MX=MOUSE(0):MY=MOUSE(1)
  256. 2560  FOR I=0 TO 1
  257. 2570   IF MX>400+I*48 AND MX<448+I*48 AND MY>152 AND MY<168 THEN
  258. 2580    ON I+1 GOSUB *T_ROLL_U,*T_ROLL_D
  259. 2590   ENDIF
  260. 2600  NEXT
  261. 2610  FOR I=0 TO 6
  262. 2620   IF I+CLCD>CDN THEN I=6:GOTO 2670
  263. 2630   IF TSRT(I+CLCD)=1 THEN 2670
  264. 2640   IF MX>144 AND MX<496 AND MY>168+I*24 AND MY<192+I*24 THEN
  265. 2650    K=I:I=6:NEXT:GOTO 2690
  266. 2660   ENDIF 
  267. 2670  NEXT
  268. 2680  GOTO 2500
  269. 2690  CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%13
  270. 2700  CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%14
  271. 2710  WHILE MOUSE(2,0):WEND
  272. 2720  TSRT(K+CLCD)=1:NN(J)=K+CLCD
  273. 2730  CONNECT(145,191+K*24)-(145,169+K*24)-(495,169+K*24),%14
  274. 2740  CONNECT(146,191+K*24)-(495,191+K*24)-(495,170+K*24),%13
  275. 2750  SYMBOL(320-LEN(TITLE$(K+CLCD))*4,172+K*24),TITLE$(K+CLCD),1,1,2
  276. 2760 NEXT
  277. 2770 PUT@A(128,128)-(512,352),PT3%
  278. 2780 GOSUB *WINDOW
  279. 2790 SYMBOL(235,232),"これでいいですか?",1,1,7
  280. 2800 M=0
  281. 2810 WHILE M=0
  282. 2820  M=-MOUSE(2,0)-MOUSE(2,1)*2
  283. 2830 WEND
  284. 2840 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 2980
  285. 2850 GOSUB *W_CHECK_YN
  286. 2860 IF YN=1 THEN 2880
  287. 2870 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 2980 ELSE 2800
  288. 2880 PUT@A(128,128)-(512,352),PT3%
  289. 2890 FOR I=1 TO CDN:J=NN(I)
  290. 2900  TITLE$(I)=BTITLE$(J):ART$(I)=BART$(J):LAB$(I)=BLAB$(J)
  291. 2910  DT$(I)=BDT$(J):SN(I)=BSN(J):TIF$(I)=BTIF$(J):WRD$(I)=BWRD$(J)
  292. 2920  FOR L=1 TO SN(I)
  293. 2930   TM$(I,L)=BTM$(J,L):SNAME$(I,L)=BSNAME$(J,L)
  294. 2940 NEXT L,I
  295. 2950 CCD=1:CLCD=CCD:CS=1
  296. 2960 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  297. 2970 GOSUB *DISPLAY_SNAMES
  298. 2980 ERASE TSRT,NN
  299. 2990 ERASE BTITLE$,BART$,BLAB$,BDT$,BSN,BTIF$,BWRD$,BTM$,BSNAME$
  300. 3000 SORT=0
  301. 3010 RETURN
  302. 3020 *T_ROLL_U
  303. 3030 CONNECT(401,167)-(401,153)-(447,153),%13
  304. 3040 CONNECT(402,167)-(447,167)-(447,154),%14
  305. 3050 IF CLCD=<1 THEN 3140
  306. 3060 CLCD=CLCD-1
  307. 3070 GET@A(144,168)-(496,312),PT1%
  308. 3080 PUT@A(144,192)-(496,336),PT1%
  309. 3090 LINE(146,172)-(494,188),PSET,%1,BF
  310. 3100 IF SORT=0 THEN 3130
  311. 3110 IF TSRT(CLCD)=0 THEN 3130
  312. 3120 SYMBOL(320-LEN(TITLE$(CLCD))*4,172),TITLE$(CLCD),1,1,2:GOTO 3140
  313. 3130 SYMBOL(320-LEN(TITLE$(CLCD))*4,172),TITLE$(CLCD),1,1,7
  314. 3140 CONNECT(401,167)-(401,153)-(447,153),%14
  315. 3150 CONNECT(402,167)-(447,167)-(447,154),%13
  316. 3160 RETURN
  317. 3170 *T_ROLL_D
  318. 3180 CONNECT(449,167)-(449,153)-(495,153),%13
  319. 3190 CONNECT(450,167)-(495,167)-(495,154),%14
  320. 3200 IF CLCD>=CDN-6 THEN 3290
  321. 3210 CLCD=CLCD+1
  322. 3220 GET@A(144,192)-(496,336),PT1%
  323. 3230 PUT@A(144,168)-(496,312),PT1%
  324. 3240 LINE(146,316)-(494,332),PSET,%1,BF
  325. 3250 IF SORT=0 THEN 3280
  326. 3260 IF TSRT(CLCD+6)=0 THEN 3280
  327. 3270 SYMBOL(320-LEN(TITLE$(CLCD+6))*4,316),TITLE$(CLCD+6),1,1,2:GOTO 3290
  328. 3280 SYMBOL(320-LEN(TITLE$(CLCD+6))*4,316),TITLE$(CLCD+6),1,1,7
  329. 3290 CONNECT(449,167)-(449,153)-(495,153),%14
  330. 3300 CONNECT(450,167)-(495,167)-(495,154),%13
  331. 3310 RETURN
  332. 3320 *TITLE_ADD
  333. 3330 IF CDN<1 THEN RETURN
  334. 3340 DIM BTITLE$(CDN),BART$(CDN),BLAB$(CDN),BDT$(CDN),BSN(CDN),BTIF$(CDN),BWRD$(CDN)
  335. 3350 DIM BTM$(CDN,99),BSNAME$(CDN,99)
  336. 3360 CONNECT(385,23)-(385,1)-(463,1),%13
  337. 3370 CONNECT(386,23)-(463,23)-(463,2),%14
  338. 3380 WHILE MOUSE(2,0):WEND
  339. 3390 CONNECT(385,23)-(385,1)-(463,1),%14
  340. 3400 CONNECT(386,23)-(463,23)-(463,2),%13
  341. 3410 GET@A(128,128)-(512,352),PT3%
  342. 3420 GOSUB *WINDOW
  343. 3430 SYMBOL(144,200),"タイトル新規追加",1,1,7,,,1
  344. 3440 SYMBOL(185,232),"登録したいCDをドライブに入れて!",1,1,7
  345. 3450 IF PLAYCD=1 OR PLAYCD=2 THEN CD STOP
  346. 3460 M=0
  347. 3470 WHILE M=0
  348. 3480  M=-MOUSE(2,0)-MOUSE(2,1)*2
  349. 3490 WEND
  350. 3500 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 3890
  351. 3510 GOSUB *W_CHECK_YN
  352. 3520 IF YN=1 THEN 3540
  353. 3530 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:GOTO 3890 ELSE 3460
  354. 3540 PUT@A(128,128)-(512,352),PT3%
  355. 3550 CDINF CDF%
  356. 3560 FOR I=1 TO CDN
  357. 3570  BTITLE$(I)=TITLE$(I):BART$(I)=ART$(I):BLAB$(I)=LAB$(I)
  358. 3580  BDT$(I)=DT$(I):BSN(I)=SN(I):BTIF$(I)=TIF$(I):BWRD$(I)=WRD$(I)
  359. 3590  FOR L=1 TO SN(I)
  360. 3600   BTM$(I,L)=TM$(I,L):BSNAME$(I,L)=SNAME$(I,L)
  361. 3610 NEXT L,I
  362. 3620 CDN=CDN+1
  363. 3630 ERASE TITLE$,ART$,LAB$,DT$,SN,TIF$,WRD$,TM$,SNAME$
  364. 3640 DIM TITLE$(CDN),ART$(CDN),LAB$(CDN),DT$(CDN),SN(CDN),TIF$(CDN),WRD$(CDN)
  365. 3650 DIM TM$(CDN,99),SNAME$(CDN,99)
  366. 3660 FOR I=1 TO CDN-1
  367. 3670  TITLE$(I)=BTITLE$(I):ART$(I)=BART$(I):LAB$(I)=BLAB$(I)
  368. 3680  DT$(I)=BDT$(I):SN(I)=BSN(I):TIF$(I)=BTIF$(I):WRD$(I)=BWRD$(I)
  369. 3690  FOR L=1 TO SN(I)
  370. 3700   TM$(I,L)=BTM$(I,L):SNAME$(I,L)=BSNAME$(I,L)
  371. 3710 NEXT L,I
  372. 3720 SN(CDN)=CDF%(5)
  373. 3730 FOR I=1 TO SN(CDN)
  374. 3740  IF I=SN(CDN) THEN
  375. 3750   A1=CDF%(2)-VAL(LEFT$(CDSTIME$(I),2))
  376. 3760   A2=CDF%(3)-VAL(MID$(CDSTIME$(I),4,2))
  377. 3770   A21=CDF%(4)-VAL(RIGHT$(CDSTIME$(I),2)):GOTO 3820
  378. 3780  ENDIF
  379. 3790  A1=VAL(LEFT$(CDSTIME$(I+1),2))-VAL(LEFT$(CDSTIME$(I),2))
  380. 3800  A2=VAL(MID$(CDSTIME$(I+1),4,2))-VAL(MID$(CDSTIME$(I),4,2))
  381. 3810  A21=VAL(RIGHT$(CDSTIME$(I+1),2))-VAL(RIGHT$(CDSTIME$(I),2))
  382. 3820  A3=INT(A1*60+A2+A21/75)
  383. 3830  TM1$=STR$(INT(A3/60)):TM2$=STR$(A3 MOD 60)
  384. 3840  TM$(CDN,I)=RIGHT$("00"+RIGHT$(TM1$,LEN(TM1$)-1),2)+"'"+RIGHT$("00"+RIGHT$(TM2$,LEN(TM2$)-1),2)
  385. 3850 NEXT
  386. 3860 CCD=CDN:CLCD=1:CS=1
  387. 3870 GOSUB *DISPLAY_CT:GOSUB *DISPLAY_CDDATA
  388. 3880 GOSUB *DISPLAY_SNAMES
  389. 3890 ERASE BTITLE$,BART$,BLAB$,BDT$,BSN,BTIF$,BWRD$,BTM$,BSNAME$
  390. 3900 RETURN
  391. 3910 *EDIT_TITLE
  392. 3920 CONNECT(273,63)-(273,41)-(623,41),%13
  393. 3930 CONNECT(274,63)-(623,63)-(623,42),%14
  394. 3940 IP_WX=280:IP_WY=44:IP_MAX=42:IP_CL=1:IP_NAME$=TITLE$(CCD)
  395. 3950 GOSUB *IP_SET
  396. 3960 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  397. 3970 GOSUB *IP_MAIN:WEND
  398. 3980 GOSUB *IP_END
  399. 3990 TITLE$(CCD)=IP_NAME$
  400. 4000 CONNECT(273,63)-(273,41)-(623,41),%14
  401. 4010 CONNECT(274,63)-(623,63)-(623,42),%13
  402. 4020 LINE(274,42)-(622,62),PSET,%1,BF
  403. 4030 SYMBOL(448-LEN(TITLE$(CCD))*4,44),TITLE$(CCD),1,1,7
  404. 4040 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_ART
  405. 4050 RETURN
  406. 4060 *EDIT_ART
  407. 4070 CONNECT(273,87)-(273,65)-(623,65),%13
  408. 4080 CONNECT(274,87)-(623,87)-(623,66),%14
  409. 4090 IP_WX=280:IP_WY=68:IP_MAX=42:IP_CL=1:IP_NAME$=ART$(CCD)
  410. 4100 GOSUB *IP_SET
  411. 4110 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  412. 4120 GOSUB *IP_MAIN:WEND
  413. 4130 GOSUB *IP_END
  414. 4140 ART$(CCD)=IP_NAME$
  415. 4150 CONNECT(273,87)-(273,65)-(623,65),%14
  416. 4160 CONNECT(274,87)-(623,87)-(623,66),%13
  417. 4170 LINE(274,66)-(622,86),PSET,%1,BF
  418. 4180 SYMBOL(448-LEN(ART$(CCD))*4,68),ART$(CCD),1,1,7
  419. 4190 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_TITLE
  420. 4200 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_DT
  421. 4210 RETURN
  422. 4220 *EDIT_DT
  423. 4230 CONNECT(273,111)-(273,89)-(399,89),%13
  424. 4240 CONNECT(274,111)-(399,111)-(399,90),%14
  425. 4250 IP_WX=280:IP_WY=92:IP_MAX=10:IP_CL=1:IP_NAME$=DT$(CCD)
  426. 4260 LINE(274,90)-(398,110),PSET,%1,BF
  427. 4270 GOSUB *IP_SET
  428. 4280 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  429. 4290 GOSUB *IP_MAIN:WEND
  430. 4300 GOSUB *IP_END
  431. 4310 DT$(CCD)=IP_NAME$
  432. 4320 CONNECT(273,111)-(273,89)-(399,89),%14
  433. 4330 CONNECT(274,111)-(399,111)-(399,90),%13
  434. 4340 LINE(274,90)-(398,110),PSET,%1,BF
  435. 4350 SYMBOL(336-LEN(DT$(CCD))*4,92),DT$(CCD),1,1,7
  436. 4360 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_ART
  437. 4370 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_LAB
  438. 4380 RETURN
  439. 4390 *EDIT_TIF
  440. 4400 CONNECT(273,135)-(273,113)-(399,113),%13
  441. 4410 CONNECT(274,135)-(399,135)-(399,114),%14
  442. 4420 IP_WX=280:IP_WY=116:IP_MAX=8:IP_CL=1:IP_NAME$=TIF$(CCD)
  443. 4430 LINE(274,114)-(398,134),PSET,%1,BF
  444. 4440 GOSUB *IP_SET
  445. 4450 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  446. 4460 GOSUB *IP_MAIN:WEND
  447. 4470 GOSUB *IP_END
  448. 4480 TIF$(CCD)=IP_NAME$
  449. 4490 CONNECT(273,135)-(273,113)-(399,113),%14
  450. 4500 CONNECT(274,135)-(399,135)-(399,114),%13
  451. 4510 LINE(274,114)-(398,134),PSET,%1,BF
  452. 4520 SYMBOL(336-LEN(TIF$(CCD))*4,116),TIF$(CCD),1,1,7
  453. 4530 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_LAB
  454. 4540 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_WRD
  455. 4550 RETURN
  456. 4560 *EDIT_LAB
  457. 4570 GET@A(274,89)-(623,111),PT3%
  458. 4580 LINE(274,89)-(623,111),PSET,7,BF,%1
  459. 4590 IP_WX=280:IP_WY=92:IP_MAX=42:IP_CL=1:IP_NAME$=LAB$(CCD)
  460. 4600 GOSUB *IP_SET
  461. 4610 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  462. 4620 GOSUB *IP_MAIN:WEND
  463. 4630 GOSUB *IP_END
  464. 4640 LAB$(CCD)=IP_NAME$
  465. 4650 PUT@A(274,89)-(623,111),PT3%
  466. 4660 LINE(466,90)-(622,110),PSET,%1,BF
  467. 4670 IF LEN(LAB$(CCD))>18 THEN A$=LEFT$(LAB$(CCD),18) ELSE A$=LAB$(CCD)
  468. 4680 SYMBOL(544-LEN(A$)*4,92),A$,1,1,7
  469. 4690 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_DT
  470. 4700 IF IP_CK$=CHR$(&H1F) THEN GOTO *EDIT_TIF
  471. 4710 RETURN
  472. 4720 *EDIT_WRD
  473. 4730 CONNECT(465,135)-(465,113)-(623,113),%13
  474. 4740 CONNECT(466,135)-(623,135)-(623,114),%14
  475. 4750 IP_WX=472:IP_WY=116:IP_MAX=6:IP_CL=1:IP_NAME$=WRD$(CCD)
  476. 4760 LINE(466,114)-(622,134),PSET,%1,BF
  477. 4770 GOSUB *IP_SET
  478. 4780 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  479. 4790 GOSUB *IP_MAIN:WEND
  480. 4800 GOSUB *IP_END
  481. 4810 WRD$(CCD)=IP_NAME$
  482. 4820 CONNECT(465,135)-(465,113)-(623,113),%14
  483. 4830 CONNECT(466,135)-(623,135)-(623,114),%13
  484. 4840 LINE(466,114)-(622,134),PSET,%1,BF
  485. 4850 SYMBOL(544-LEN(WRD$(CCD))*4,116),WRD$(CCD),1,1,7
  486. 4860 IF IP_CK$=CHR$(&H1E) THEN GOTO *EDIT_TIF
  487. 4870 IF IP_CK$=CHR$(&H1F) THEN CES=0:GOTO *EDIT_SNAME
  488. 4880 RETURN
  489. 4890 *EDIT_SNAME
  490. 4900 CONNECT(225,199+CES*24)-(225,177+CES*24)-(623,177+CES*24),%13
  491. 4910 CONNECT(226,199+CES*24)-(623,199+CES*24)-(623,178+CES*24),%14
  492. 4920 IP_WX=244:IP_WY=180+CES*24:IP_MAX=42:IP_CL=1
  493. 4930 IP_NAME$=SNAME$(CCD,CS+CES)
  494. 4940 GOSUB *IP_SET
  495. 4950 WHILE IP_CK$<>CHR$(&HD) AND IP_CK$<>CHR$(&H1E) AND IP_CK$<>CHR$(&H1F)
  496. 4960 GOSUB *IP_MAIN:WEND
  497. 4970 GOSUB *IP_END
  498. 4980 SNAME$(CCD,CS+CES)=IP_NAME$
  499. 4990 CONNECT(225,199+CES*24)-(225,177+CES*24)-(623,177+CES*24),%14
  500. 5000 CONNECT(226,199+CES*24)-(623,199+CES*24)-(623,178+CES*24),%13
  501. 5010 LINE(244,178+CES*24)-(580,198+CES*24),PSET,%1,BF
  502. 5020 SYMBOL(412-LEN(SNAME$(CCD,CS+CES))*4,180+CES*24),SNAME$(CCD,CS+CES),1,1,7
  503. 5030 IF IP_CK$=CHR$(&H1E) THEN
  504. 5040  IF CES>0 THEN CES=CES-1:GOTO *EDIT_SNAME
  505. 5050  IF CS+CES>1 THEN GOSUB *S_ROLL_U:GOTO *EDIT_SNAME
  506. 5060  GOTO *EDIT_WRD
  507. 5070 ENDIF
  508. 5080 IF IP_CK$=CHR$(&H1F) THEN
  509. 5090  IF CES<11 AND CES<SN(CCD)-1 THEN CES=CES+1:GOTO *EDIT_SNAME
  510. 5100  IF CS+CES<SN(CCD) THEN GOSUB *S_ROLL_D:GOTO *EDIT_SNAME
  511. 5110 ENDIF
  512. 5120 RETURN
  513. 5130 *SAVE
  514. 5140 CONNECT(225,23)-(225,1)-(303,1),%13
  515. 5150 CONNECT(226,23)-(303,23)-(303,2),%14
  516. 5160 WHILE MOUSE(2,0):WEND
  517. 5170 KILF=0
  518. 5180 CONNECT(225,23)-(225,1)-(303,1),%14
  519. 5190 CONNECT(226,23)-(303,23)-(303,2),%13
  520. 5200 GOSUB *FILE_IP_P
  521. 5210 SYMBOL(144,200),".CDLファイル保存",1,1,7
  522. 5220 GOSUB *FILE_IP_L
  523. 5230 IF KILF=1 THEN KILL FILE$
  524. 5240 OPEN "O",#1,FILE$
  525. 5250 A$=STR$(CDN):A$=RIGHT$("00000"+RIGHT$(A$,LEN(A$)-1),5)
  526. 5260 PRINT#1,A$
  527. 5270 FOR I=1 TO CDN
  528. 5280  PRINT#1,"##"
  529. 5290  PRINT#1,LEFT$(TITLE$(I)+SPACE$(42),42)
  530. 5300  PRINT#1,LEFT$(ART$(I)+SPACE$(42),42)
  531. 5310  PRINT#1,LEFT$(LAB$(I)+SPACE$(42),42)
  532. 5320  PRINT#1,LEFT$(DT$(I)+SPACE$(10),10)
  533. 5330  PRINT#1,RIGHT$(STR$(SN(I)),2)
  534. 5340  PRINT#1,LEFT$(TIF$(I)+SPACE$(8),8)
  535. 5350  PRINT#1,LEFT$(WRD$(I)+SPACE$(6),6)
  536. 5360  FOR J=1 TO SN(I)
  537. 5370   PRINT#1,TM$(I,J)
  538. 5380   PRINT#1,LEFT$(SNAME$(I,J)+SPACE$(42),42)
  539. 5390 NEXT J,I
  540. 5400 CLOSE
  541. 5410 RETURN
  542. 5420 *COPYRIGHT
  543. 5430 WHILE MOUSE(2,0):WEND
  544. 5440 GET@A(128,128)-(512,352),PT3%
  545. 5450 LINE(128,176)-(512,305),PSET,7,BF,%1
  546. 5460 SYMBOL(192,200),".CDLファイルエディタ",1,1,7
  547. 5470 SYMBOL(220,225),"CDLister Ver.1.1",1,1,%6
  548. 5480 SYMBOL(240,260),"Copyright (c) KIM 1994.",1,1,7
  549. 5490 WHILE MOUSE(2,0)=0 AND MOUSE(2,1)=0:WEND
  550. 5500 PUT@A(128,128)-(512,352),PT3%
  551. 5510 RETURN
  552. 5520 *EXIT
  553. 5530 CONNECT(617,23)-(617,1)-(639,1),%13
  554. 5540 CONNECT(618,23)-(639,23)-(639,2),%14
  555. 5550 WHILE MOUSE(2,0):WEND
  556. 5560 CONNECT(617,23)-(617,1)-(639,1),%14
  557. 5570 CONNECT(618,23)-(639,23)-(639,2),%13
  558. 5580 GOSUB *WINDOW
  559. 5590 SYMBOL(272,232),"終了します",1,1,7
  560. 5600 M=0
  561. 5610 WHILE M=0
  562. 5620  M=-MOUSE(2,0)-MOUSE(2,1)*2
  563. 5630 WEND
  564. 5640 IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN *MAIN
  565. 5650 GOSUB *W_CHECK_YN
  566. 5660 IF YN=1 THEN
  567. 5670  MOUSE 5
  568. 5680  PUT@A(128,128)-(512,352),PT3%
  569. 5690  IF PLAYCD=1 OR PLAYCD=2 THEN CD STOP
  570. 5700  KILL"CDLVHIS.DAT"
  571. 5710  OPEN "O",#1,"CDLVHIS.DAT"
  572. 5720  PRINT#1,FILE$
  573. 5730  CLOSE
  574. 5740  END
  575. 5750 ENDIF
  576. 5760 IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RETURN *MAIN
  577. 5770 GOTO 5600
  578. 5780 *WINDOW_S
  579. 5790 WINDOW(0,0)-(639-128,479-128):VIEW(128,128)-(639,479)
  580. 5800 LINE(0,0)-(384,224),PSET,7,BF,%1
  581. 5810 FOR I=0 TO 6
  582. 5820  LINE(16,40+I*24)-(368,64+I*24),PSET,%13,B
  583. 5830  CONNECT(17,63+I*24)-(17,41+I*24)-(367,41+I*24),%14
  584. 5840  CONNECT(18,63+I*24)-(367,63+I*24)-(367,42+I*24),%13
  585. 5850 NEXT
  586. 5860 FOR I=0 TO 1
  587. 5870  LINE(272+I*48,24)-(320+I*48,40),PSET,%13,B
  588. 5880  CONNECT(273+I*48,39)-(273+I*48,25)-(319+I*48,25),%14
  589. 5890  CONNECT(274+I*48,39)-(319+I*48,39)-(319+I*48,26),%13
  590. 5900 NEXT
  591. 5910 SYMBOL(294,29),"▲",.5!,.5!,%11
  592. 5920 SYMBOL(294+48,29),"▼",.5!,.5!,%11
  593. 5930 WINDOW:VIEW
  594. 5940 RETURN
  595. 5950 *WINDOW
  596. 5960 GET@A(128,128)-(512,352),PT3%
  597. 5970 LINE(128,192)-(512,289),PSET,7,BF,%1
  598. 5980 FOR I=0 TO 1
  599. 5990  LINE(408+I*48,256)-(456+I*48,280),PSET,%13,B
  600. 6000  CONNECT(409+I*48,279)-(409+I*48,257)-(455+I*48,257),%14
  601. 6010  CONNECT(410+I*48,279)-(455+I*48,279)-(455+I*48,258),%13
  602. 6020 NEXT
  603. 6030 SYMBOL(416,260),"実行",1,1,7
  604. 6040 SYMBOL(464,260),"取消",1,1,7
  605. 6050 RETURN
  606. 6060 *W_CHECK_YN
  607. 6070 MX=MOUSE(0):MY=MOUSE(1)
  608. 6080 YN=0
  609. 6090 FOR I=0 TO 1
  610. 6100  IF MX>408+I*48 AND MX<456+I*48 AND MY>256 AND MY<280 THEN
  611. 6110   CONNECT(409+I*48,279)-(409+I*48,257)-(455+I*48,257),%13
  612. 6120   CONNECT(410+I*48,279)-(455+I*48,279)-(455+I*48,258),%14
  613. 6130   YN=I+1
  614. 6140  ENDIF
  615. 6150 NEXT
  616. 6160 WHILE MOUSE(2,0):WEND
  617. 6170 RETURN
  618. 6180 *CDPLAY
  619. 6190 CONNECT(113,247)-(113,225)-(159,225),%13
  620. 6200 CONNECT(114,247)-(159,247)-(159,226),%14
  621. 6210 IF PLAYCD=1 THEN PLAYCD=2:CD PAUSE:GOTO 6290
  622. 6220 IF PLAYCD=2 THEN PLAYCD=1:CD CONT:GOTO 6290
  623. 6230 PLAYCD=1
  624. 6240 CDINF CDF%
  625. 6250 IF CDF%(1)=2 THEN GOTO 6290 ELSE IF CDF%(1)=3 THEN PLAYCDF=2 ELSE PLAYCDF=1
  626. 6260 PLAYCDN=PLAYCDF
  627. 6270 CD PLAY PLAYCDN,CDF%(5)
  628. 6280 GOSUB *SYMBOL_PLAYCD
  629. 6290 WHILE MOUSE(2,0):WEND
  630. 6300 CONNECT(113,247)-(113,225)-(159,225),%14
  631. 6310 CONNECT(114,247)-(159,247)-(159,226),%13
  632. 6320 RETURN
  633. 6330 *SYMBOL_PLAYCD
  634. 6340 LINE(200,228)-(224,244),PSET,0,BF
  635. 6350 SYMBOL(196,228),STR$(PLAYCDN),1,1,%12
  636. 6360 RETURN
  637. 6370 *CDSTOP
  638. 6380 CONNECT(161,247)-(161,225)-(199,225),%13
  639. 6390 CONNECT(162,247)-(199,247)-(199,226),%14
  640. 6400 IF PLAYCD=0 THEN 6440
  641. 6410 CD STOP
  642. 6420 PLAYCD=0
  643. 6430 LINE(200,228)-(224,244),PSET,0,BF
  644. 6440 WHILE MOUSE(2,0):WEND
  645. 6450 CONNECT(161,247)-(161,225)-(199,225),%14
  646. 6460 CONNECT(162,247)-(199,247)-(199,226),%13
  647. 6470 RETURN
  648. 6480 *CDBACK
  649. 6490 CONNECT(17,239)-(17,225)-(63,225),%13
  650. 6500 CONNECT(18,239)-(63,239)-(63,226),%14
  651. 6510 IF PLAYCD=0 THEN 6560
  652. 6520 PLAYCD=1
  653. 6530 IF CDS%(7)<2 AND PLAYCDN>PLAYCDF THEN PLAYCDN=PLAYCDN-1
  654. 6540 CD PLAY PLAYCDN,CDF%(5)
  655. 6550 GOSUB *SYMBOL_PLAYCD
  656. 6560 CONNECT(17,239)-(17,225)-(63,225),%14
  657. 6570 CONNECT(18,239)-(63,239)-(63,226),%13
  658. 6580 RETURN
  659. 6590 *CDNEXT
  660. 6600 CONNECT(65,239)-(65,225)-(111,225),%13
  661. 6610 CONNECT(66,239)-(111,239)-(111,226),%14
  662. 6620 IF PLAYCD=0 OR PLAYCDN>=CDF%(5) THEN 6670
  663. 6630 PLAYCD=1
  664. 6640 PLAYCDN=PLAYCDN+1
  665. 6650 CD PLAY PLAYCDN,CDF%(5)
  666. 6660 GOSUB *SYMBOL_PLAYCD
  667. 6670 CONNECT(65,239)-(65,225)-(111,225),%14
  668. 6680 CONNECT(66,239)-(111,239)-(111,226),%13
  669. 6690 RETURN
  670. 6700 *IP_SET
  671. 6710 '設定項目 IP_WX,IP_WY,IP_MAX,IP_CL,IP_NAME$
  672. 6720 WHILE INKEY$<>"":WEND
  673. 6730 LINE(IP_WX,IP_WY)-(IP_WX+IP_MAX*8,IP_WY+15),PSET,%IP_CL,BF
  674. 6740 SYMBOL(IP_WX,IP_WY),IP_NAME$,1,1,7
  675. 6750 IP_X=0:IP_J=0:IP_L=LEN(IP_NAME$):IP_CK$=""
  676. 6760 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  677. 6770 RETURN
  678. 6780 *IP_MAIN
  679. 6790 IP_BNAME$=IP_NAME$
  680. 6800 IP_A$=""
  681. 6810 IP_B$=INKEY$:IF IP_B$<>"" THEN IP_A$=IP_A$+IP_B$:GOTO 6810
  682. 6820 IF IP_A$="" THEN RETURN
  683. 6830 FOR IP_I=1 TO KLEN(IP_A$)
  684. 6840  IP_CK$=KMID$(IP_A$,IP_I,1)
  685. 6850  IP_ACK=ASC(IP_CK$)
  686. 6860  IF IP_ACK<&H20 OR IP_ACK=&H7F THEN 6930
  687. 6870  IF LEN(IP_NAME$+IP_CK$)>IP_MAX THEN 6930
  688. 6880  IP_BX=IP_X
  689. 6890  IP_NAME$=LEFT$(IP_NAME$,IP_X)+IP_CK$+RIGHT$(IP_NAME$,IP_L-IP_X)
  690. 6900  IP_X=IP_X+LEN(IP_CK$):IP_L=LEN(IP_NAME$):IP_J=IP_J+1
  691. 6910  LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,%IP_CL,BF
  692. 6920  SYMBOL(IP_WX+IP_BX*8,IP_WY),IP_CK$,1,1,7
  693. 6930 NEXT
  694. 6940 IF IP_NAME$=IP_BNAME$ THEN 6980
  695. 6950 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_L*8,IP_WY+15),PSET,%IP_CL,BF
  696. 6960 SYMBOL(IP_WX+IP_X*8,IP_WY),RIGHT$(IP_NAME$,IP_L-IP_X),1,1,7
  697. 6970 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  698. 6980 IF IP_ACK=8 THEN GOSUB *IP_BS
  699. 6990 IF IP_ACK=&H7F THEN GOSUB *IP_DEL
  700. 7000 IF IP_ACK=&H1D THEN GOSUB *IP_LEFT
  701. 7010 IF IP_ACK=&H1C THEN GOSUB *IP_RIGHT
  702. 7020 RETURN
  703. 7030 *IP_END
  704. 7040 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,%IP_CL
  705. 7050 RETURN
  706. 7060 *IP_BS
  707. 7070 IF IP_X=<0 THEN RETURN
  708. 7080 IP_A$=KLEFT$(IP_NAME$,IP_J-1)
  709. 7090 IP_B$=KRIGHT$(IP_NAME$,KLEN(IP_NAME$)-IP_J)
  710. 7100 IP_NAME$=IP_A$+IP_B$
  711. 7110 IP_BL=IP_L
  712. 7120 IP_X=LEN(IP_A$):IP_L=LEN(IP_NAME$):IP_J=IP_J-1
  713. 7130 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_BL*8,IP_WY+15),PSET,%IP_CL,BF
  714. 7140 SYMBOL(IP_WX+IP_X*8,IP_WY),IP_B$,1,1,7
  715. 7150 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  716. 7160 RETURN
  717. 7170 *IP_DEL
  718. 7180 IF IP_X>=IP_L THEN RETURN
  719. 7190 IP_A$=KLEFT$(IP_NAME$,IP_J)
  720. 7200 IP_B$=KRIGHT$(IP_NAME$,KLEN(IP_NAME$)-IP_J-1)
  721. 7210 IP_NAME$=IP_A$+IP_B$
  722. 7220 IP_BL=IP_L
  723. 7230 IP_L=LEN(IP_NAME$)
  724. 7240 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_BL*8,IP_WY+15),PSET,%IP_CL,BF
  725. 7250 SYMBOL(IP_WX+IP_X*8,IP_WY),IP_B$,1,1,7
  726. 7260 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  727. 7270 RETURN
  728. 7280 *IP_LEFT
  729. 7290 IF IP_X=<0 THEN RETURN
  730. 7300 IP_J=IP_J-1
  731. 7310 IP_BX=IP_X
  732. 7320 IP_X=LEN(KLEFT$(IP_NAME$,IP_J))
  733. 7330 LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_BX*8,IP_WY+15),PSET,%IP_CL
  734. 7340 SYMBOL(IP_WX+IP_BX*8,IP_WY),KMID$(IP_NAME$,IP_J+2,1),1,1,7
  735. 7350 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  736. 7360 RETURN
  737. 7370 *IP_RIGHT
  738. 7380 IF IP_X>=IP_L THEN RETURN
  739. 7390 IP_J=IP_J+1
  740. 7400 IP_BX=IP_X
  741. 7410 IP_X=LEN(KLEFT$(IP_NAME$,IP_J))
  742. 7420 LINE(IP_WX+IP_BX*8,IP_WY)-(IP_WX+IP_BX*8,IP_WY+15),PSET,%IP_CL
  743. 7430 SYMBOL(IP_WX+IP_BX*8,IP_WY),KMID$(IP_NAME$,IP_J,1),1,1,7
  744. 7440 LINE(IP_WX+IP_X*8,IP_WY)-(IP_WX+IP_X*8,IP_WY+15),PSET,2
  745. 7450 RETURN
  746. 7460 *E_TRAP
  747. 7470 CLOSE
  748. 7480 IF ERL=270 THEN PLAYCD=0:RESUME 330
  749. 7490 IF ERL=3550 THEN PLAYCD=0:RESUME 3890
  750. 7500 IF ERL=6240 THEN PLAYCD=0:RESUME 6290
  751. 7510 IF ERL=140 THEN RESUME 170
  752. 7520 IF ERL=5700 THEN RESUME NEXT
  753. 7530 IF ERL=5710 THEN RESUME 5740
  754. 7540 IF ERL=1160 THEN
  755. 7550  GET@A(128,128)-(512,352),PT3%
  756. 7560  LINE(128,192)-(512,289),PSET,7,BF,%1
  757. 7570  SYMBOL(185,232),"指定したファイルはありませんよ?",1,1,7
  758. 7580  LINE(456,256)-(504,280),PSET,%13,B
  759. 7590  CONNECT(457,279)-(457,257)-(503,257),%14
  760. 7600  CONNECT(458,279)-(503,279)-(503,258),%13
  761. 7610  SYMBOL(464,260),"確認",1,1,7
  762. 7620  WHILE MOUSE(2,0)=0:WEND
  763. 7630  MX=MOUSE(0):MY=MOUSE(1)
  764. 7640  IF MX>456 AND MX<504 AND MY>256 AND MY<280 THEN ELSE 7620
  765. 7650  CONNECT(457,279)-(457,257)-(503,257),%13
  766. 7660  CONNECT(458,279)-(503,279)-(503,258),%14
  767. 7670  WHILE MOUSE(2,0):WEND
  768. 7680  PUT@A(128,128)-(512,352),PT3%
  769. 7690  RESUME *MAIN
  770. 7700 ENDIF
  771. 7710 IF ERL=2260 OR ERL=2270 OR ERL=3340 OR ERL=3350 THEN
  772. 7720  GET@A(128,128)-(512,352),PT3%
  773. 7730  LINE(128,192)-(512,289),PSET,7,BF,%1
  774. 7740  SYMBOL(220,232),"メモリが足りません  スミマセン",1,1,7
  775. 7750  GOTO 7580
  776. 7760 ENDIF
  777. 7770 IF ERL=5240 OR ERL=5230 THEN
  778. 7780  GOSUB *WINDOW
  779. 7790  IF ERR=64 AND ERL=5240 THEN SYMBOL(232,232),"上書きしていいですか?",1,1,7:GOTO 7810
  780. 7800  SYMBOL(180,232),"書き込みができませんよ? チェックを!",1,1,7
  781. 7810  M=0
  782. 7820  WHILE M=0
  783. 7830   M=-MOUSE(2,0)-MOUSE(2,1)*2
  784. 7840  WEND
  785. 7850  IF M=2 THEN PUT@A(128,128)-(512,352),PT3%:RESUME 5410
  786. 7860  GOSUB *W_CHECK_YN
  787. 7870  IF YN=1 THEN
  788. 7880   IF ERR=64 AND ERL=5240 THEN KILF=1
  789. 7890   PUT@A(128,128)-(512,352),PT3%:RESUME 5230
  790. 7900  ENDIF
  791. 7910  IF YN=2 THEN PUT@A(128,128)-(512,352),PT3%:RESUME 5410
  792. 7920  GOTO 7810
  793. 7930 ENDIF
  794. 7940 SCREEN 0:CLS:PRINT"エラー行";ERL;" エラー番号";ERR
  795. 7950 MOUSE 5:END
  796.